package com.star.system.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;

/**
 * 默认用户
 *
 * @author yangzj
 */
@AllArgsConstructor
@Getter
public enum DefaultUser {

    /**
     * 管理员
     */
    SUPER_ADMIN(1L, 1L, "super_admin", UserType.WEB.getCode()),
    /**
     * 微信小程序（用户端）
     */
    WXUSER(2L, 2L, "wxuser", UserType.USER.getCode()),
    /**
     * 微信小程序（导师端）
     */
    WXMENTOR(3L, 3L, "wxmentor", UserType.MENTOR.getCode());

    /**
     * 角色id 对应数据的id
     */
    private final Long id;
    private final Long roleId;
    private final String roleCode;
    private final Integer userType;

    /**
     * 获取通过用户类型
     *
     * @param userType 用户类型
     * @return {@link DefaultUser}
     */
    public static DefaultUser getByUserType(Integer userType){
       return Arrays.stream(DefaultUser.values()).filter(c->c.getUserType().equals(userType)).findFirst().orElse(null);
    }

    /**
     * 包含
     *
     * @param id id
     * @return boolean
     */
    public static boolean contains(Long id) {
        return Arrays.stream(DefaultUser.values()).anyMatch(c -> c.getId().equals(id));
    }

    /**
     * 包含
     *
     * @param roleId 角色id
     * @return boolean
     */
    public static boolean containsRoleId(Long roleId) {
        return Arrays.stream(DefaultUser.values()).anyMatch(c -> c.getRoleId().equals(roleId));
    }

    /**
     * 包含
     *
     * @param roleCode 角色编码
     * @return boolean
     */
    public static boolean containsRoleCode(String roleCode) {
        return Arrays.stream(DefaultUser.values()).anyMatch(c -> c.getRoleCode().equals(roleCode));
    }
}
